1. Field of the Invention
The present invention relates to the transfer of data from mass storage devices to host computer systems. More particularly, the present invention relates to improved error processing that can be used to increase data transfer speeds from a mass storage device such as an optical disk read only memory to a data bus of a host personal computer.
2. Description of the Related Art
Optical mass storage devices such as compact disk read only memory (CD-ROM) devices are used for the storage and distribution of programs and data structures, particularly when the programs and data structures are too large to conveniently be distributed to users of personal computers or other small computer systems. CD-ROM devices and similar mass storage devices presently have considerably slower data access speeds than both integrated circuit memories and magnetic storage hard disk drives. Accordingly, conventional implementations of small computer systems limit the number of accesses made to optical mass storage devices. For example, program data are transferred from a CD-ROM storage disk to the magnetic hard disk of the small computer system to set up and configure the program. Once the program data are loaded onto the magnetic hard disk of the small computer, the optical disk drive is often not accessed in future uses of the program.
There are some programs that incorporate audio, video or other data structures which are not transferred to the magnetic hard disk for permanent storage; rather these data are accessed from the CD-ROM during program operation. Particularly for such programs, but also for other applications which use CD-ROM mass storage, there is a continuing desire to increase the speed at which data can be accessed from the CD-ROM and provided to the data buses of the computer system. Historically, the primary bottleneck for data transfer from the CD-ROM storage has been the speed at which data are read from the CD-ROM disk itself, rather than within the controller which formats the data, performs error correction and detection, and the other data transfer operations. To address this bottleneck, the speed at which CD-ROMs are rotated has been increased to many times the nominal rotation speed dictated by the CD-ROM standards. Thus, data are read from the CD-ROM disk at increased rates, to the extent that operations of the data transfer controller are now, or may soon be, limiting data transfer rates. Technologies which incorporate higher density data storage disks are being introduced and further improvements are under development which provide still higher data storage densities. Data are read out from these higher density mass storage systems at still higher rates, which will place still further demands on the data transfer controller.
A variety of operations must be performed on the data read from the CD-ROM disk before the data can be provided to the data buses of the host computer system. These operations are generally familiar to those of ordinary skill in the art and include descrambling, reorganization, buffer storage, error correction and error detection. Further information regarding the conventional operations performed in the transfer of data from CD-ROM disk storage to a data bus of host computer system can be found in U.S. Pat. No. 4,680,764 to Suzuki, et al., in U.S. Pat. No. 4,802,152 to Markvoort, et al., and in U.S. Pat. No. 5,581,715 to Verinsky, et al., which patents are hereby incorporated by reference. FIG. 1 illustrates aspects of the CD-ROM controller described in the Verinsky patent, which might be used to control the transfer of data from a CD-ROM storage disk to the IDE bus of a host computer. Data are read from the CD-ROM disk by reflecting laser light from the surface of a rotating disk and detecting the modulations introduced into the reflected laser light from optical variations on the surface of the disk. An analog to digital converter converts the detected modulations into digital signals which are provided as a serial bitstream 10 for input to the CD-ROM controller. CD-ROM disks store data that are typically less random than is optimal, so that the data may inadvertently present synchronization signals or other control signals. Consequently, data stored on the CD-ROM disk are scrambled. Data extracted from the reflected light thus are provided to a descrambling circuit 12 and descrambled before further processing. Data organizer 14 reorganizes the descrambled serial data bitstream into bytes and stores the data into buffer memory 16. Data are stored on a CD-ROM disk in approximately 2 KB sectors and the data are transferred from the disk to the host computer sector by sector. An entire data sector is thus stored into the buffer memory before error correction and error detection begins.
Once a 2 KB sector of data from the CD-ROM disk is stored in the buffer memory 16, error correction and error detection are performed on the stored data. The error correction and error detection operations for CD-ROM mass storage systems are largely dictated by the ISO/IEC-10149 standard for storage of data on CD-ROM disks. Conventional error encoding, error correction and error detection operations for CD-ROM mass storage systems are described in U.S. Pat. No. 4,413,340 to Odaka, et al., and in U.S. Pat. No. 4,680,764 to Suzuki, et al., which are hereby incorporated by reference. Data integrity is maintained through the transfer of data from the CD-ROM to the host computer by three sets of error correction data appended to the user data within the sector: one hundred and seventy-two P-parity error correction bytes, one hundred and four Q-parity error correction bytes and four error detection code (EDC) bytes. Incorporation of the P-parity and Q-parity data provide a double interleaved Reed-Solomon code within the CD-ROM data. The data within the sector can be grouped into two planes of data, an LSB plane and an MSB plane, with each data plane having an interleaved error correction matrix like that shown in FIG. 2. The matrix shown in FIG. 2 has 43 P-vectors consisting of twenty-four bytes of user data in combination with two P-parity bytes to form (26, 24) Reed-Solomon codewords over GF(2.sup.8). Twenty-six Q-vectors extend along the diagonals of the matrix and consist of forty-three bytes of user data and two Q-parity bytes made up by (45, 43) Reed-Solomon codewords over GF(2.sup.8). Data are read from the buffer memory 16 (FIG. 1) in the form of P-vectors and Q-vectors, error correction calculations are performed by error correction logic 18 to identify errors in the data and, when errors are found, the error equations are solved to determine how to correct the error. When errors are found in the P-vectors and Q-vectors, the data in the buffer memory 16 are corrected by overwriting the erroneous data bytes in the buffer memory with corrected data bytes.
After all of the data correction operations are performed, it is conventional to then detect whether errors remain within the corrected data or whether errors have been introduced to the data by the correction operations. Error detection is performed using a cyclic redundancy checker (CRC), in which the entire data block (.about.2000 bytes.times.8 bits) is treated as a long binary number which is divided by an check polynomial. In accordance with the ISO/IEC-10149 standard, the error check polynomial is P(x)=(x.sup.16 +x.sup.15 +x.sup.2 +1).multidot.(x.sup.16 +x.sup.2 +x+1). Data stored on the CD-ROM have four error detection code (EDC) bytes appended so that the long binary number comprising the data stored on the CD-ROM is evenly divisible by the error check polynomial. If the long binary number of the data transferred from the CD-ROM is evenly divisible by the error check polynomial, it is assumed that no further errors remain in the error check polynomial. If there is a non-zero remainder from the error check division, then errors remain in the corrected data, and further error correction is necessary. Alternately, the data may simply be reread from the CD-ROM and the error correction and detection process repeated. Typical hardware implementations of the error check division are simple, consisting of shift registers with feedback connections and an array of exclusive OR (.sym.) gates. Error detection requires that the entire data block be read from the buffer memory by the error detection logic 20 and serially shifted through the cyclic redundancy checker 22. So long as a zero remainder is produced by the error correction and error detection operations, the data may be transferred from the buffer memory 16 to the computer system data bus as an outgoing error checked sector 24.
Error correction and detection are time consuming aspects of data transfer from CD-ROM storage devices and computer data buses. Error correction of some kind, however, is necessary in reading data from an optical storage disk because of the nature of the data reading operation and the processing necessary to format the data appropriately for a digital computer. In addition, certain aspects of error correction are dictated by the industry standards for CD-ROM and other optical mass storage systems.